PDA

View Full Version : سوال: پیدا کردن موارد خاص



janbozorgi
شنبه 10 اسفند 1387, 09:34 صبح
با سلام
در نظر دارم که در متنی که شامل کلمات خاصی بدون چینش منظم است جستجو کرده و هر کدام از آن کلمات خاص را که میابد را با اعداد تصاعدی شروع به جایگزینی کند.
مثلا **** را از ابتدای متن جستجو کرده و اولی را با عدد یک و دومی را با عدد دو و... جایگزین کند.
با تشکر

janbozorgi
شنبه 10 اسفند 1387, 14:14 عصر
با سلام
البته یه کد برای این منظور نوشتم که گفتم شاید مفید باشه برای سایر دوستان و یه جواب دیگه هم یکی از دوستان زحمت کشیدن که هر دوشون رو برای استفاده میذارم:

راه حال اول:



<table dir="rtl" class="Main" align="center" cellpadding="0" cellspacing="0" valign=top><tr><td>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" dir="ltr" style="font-family:tahoma; font-size:11">
کارکترهاي مبدل: <input type="Text" size="4" name="txtChar"><br>
منبع فايلها: <input type="Text" value="D:/Temp/Main" name="txtAdd" size="50"><br>
مقصد فايلها: <input type="Text" value="D:/Temp" name="txtMaq" size="50"><br>
<input type="submit" size="4" name="submit" value="convert..." dir="ltr">
</form>
<?php
function str_replace1($mainMatn, $replace, $times, $number) {
$number=$number-$times;
$pieces = explode($replace, $mainMatn);
for($i=0; $i<$times; $i++) {
$reStr= $reStr.$pieces[$i].++$number;
}
$reStr= $reStr.$pieces[$times];
return($reStr);
}
$results = array();
$num= 0;
if(isset($_POST['submit'])) {
$char=$_POST['txtChar'];
$add=$_POST['txtAdd'];
$addr=$_POST['txtMaq'];
if($char=="") {
echo "<script languge=javascript> alert(\"لطفا عبارت مورد نظر جهت تبديل را تعيين نماييد\"); </script>";
exit;
}
$dirHandle= opendir($add);
while (($file = readdir($dirHandle))!==false) {
if($file!= "." && $file!= "..") {
$results[i]= $file;
$addfile= $add."/".$results[i];
$fpr = fopen($addfile, "r");
$fpw = fopen($addr."/".$results[i], "w");
while (!feof($fpr)) {
$buffer = fgets($fpr);
$val=substr_count($buffer, $char);
$num= $num+$val;
switch ($val) {
case 0:
fputs($fpw,$buffer);
break;
default:
fputs($fpw,str_replace1($buffer, $char, $val, $num));
break;
}
}
fclose($fpr);
fclose($fpw);
}
}
closedir($dirHandle);
} else { }




راه حل دوم:



$str="* iranphp.org * is * best * site";
$i=1;
while(true){
$str=preg_replace("/\*/", $i, $str,1,$count);
if(!$count){
break;
}
$i++;
}


با تشکر