PDA

View Full Version : سوال: این دو دستور برابرعمل می کنند در این کد



h.alizadeh
جمعه 07 آبان 1389, 17:15 عصر
سلام،

آیا این دو کد برابرند؟


$j= str_replace("\n","\\n",$j);
$j = ereg_replace("\n","\\n",$j);

ممنون

mohmadd
جمعه 07 آبان 1389, 18:49 عصر
هر دو یه کاری انجام میدن . ولی با دومی میشه عبارت منظم هم نوشت .
دومی منسوخ شده میتونید به جاش preg_replace استفاده کنید .
http://ir.php.net/manual/fa/function.preg-replace.php

bestirani2
جمعه 07 آبان 1389, 20:28 عصر
زمانی که نیازی به عبارت منظم نیست از مورد اول استفاده کنید تا سرعت بیشتری داشته باشید

h.alizadeh
جمعه 07 آبان 1389, 23:23 عصر
من این دستور رو با preg_match نوشتم بهم اررور داد:

Warning: preg_match() [function.preg-match]: Empty regular expression in

کدم:


$j = preg_match_replace("\n","\\n",$j);

پس توی این مورد مثل همند.

ممنون

mohmadd
شنبه 08 آبان 1389, 00:02 صبح
اصلا ما چنین تابعی نداریم
تابع preg_replace مثل تابع str_reaplce عمل میکنه .



$str = str_replace("salam", "Hello", "salam World!");//works ...
$str = str_replace("salam", "Hello", "SALAM World!");//dont worksمثال اول کار میکنه ولی مثال دومی چون با پارامتر سوم با حروف بزرگ نوشته شده . کار نمیکنه

اما میشه از تابع str_ireplace استفاده کرد که مثل تابع str_replace هست وبین حروف کوچک و بزرگ فرقی نمیزاره :


$str = str_ireplace("salam", "Hello", "SALAM World!"); i به معنای Case-insensitive هستش

در اینجا هم اگه در پارامتر سوم hi , salam و hey مچ بشن پارامتر دوم جایگزین میشه


$str = preg_replace('@(hi|salam|hey)@i','Hello',"hi world!");


بازم هر مشکلی بود بگو

funpatogh
شنبه 08 آبان 1389, 20:42 عصر
توی ereg برای شروع و پایان 2 کاراکتر مثل هم لازم نیست اما توی preg_match که جدید تر هستش حتما برای شروع و پایان 2 کاراکتر مثل هم لازم هست مثل / ,#,@ و ....

h.alizadeh
شنبه 08 آبان 1389, 23:23 عصر
ممنونم از لطفتون.ببخشید توی کدم اشتباهی match رو هم نوشته بودم منظورمpreg_replaceبود.
حالا اگه بخوایم این دستور رو :

$j = ereg_replace("\n","\\n",$j);
با preg_replaceبنویسیم چی شکلی میشه؟
من اینجور نوشتم اررور میده:

$j = preg_replace("\n","\\n",$j);
مگه رگولراکسپرشن n\ خودش n\نمیشه؟
پیام میده که :

Warning: preg_replace() [function.preg-replace]: Empty regular expression in

!!

h.alizadeh
شنبه 08 آبان 1389, 23:25 عصر
توی ereg برای شروع و پایان 2 کاراکتر مثل هم لازم نیست اما توی preg_match که جدید تر هستش حتما برای شروع و پایان 2 کاراکتر مثل هم لازم هست مثل / ,#,@ و ....

میشه با مثال بگید منظورتون رو نفهمیدم:خجالت:

funpatogh
شنبه 08 آبان 1389, 23:46 عصر
ممنونم از لطفتون.ببخشید توی کدم اشتباهی match رو هم نوشته بودم منظورمpreg_replaceبود.
حالا اگه بخوایم این دستور رو :
کد PHP:

$j = ereg_replace("\n","\\n",$j);


با preg_replaceبنویسیم چی شکلی میشه؟
من اینجور نوشتم اررور میده:
کد PHP:

$j = preg_replace("\n","\\n",$j);


مگه رگولراکسپرشن n\ خودش n\نمیشه؟
پیام میده که :

Warning: preg_replace() [function.preg-replace]: Empty regular expression in



$j = preg_replace('/\n/','\\n',$j);
اینو تست کنید ببینید جواب میدهد

اینم مثال برای شما


<?php

ereg("mohammad","hello dear,i am mohammad jamshidi",$match);
echo "<pre>";
print_r($match);
echo "</pre>";
preg_match("/mohammad/","hello dear,i am mohammad jamshidi",$match);
echo "<pre>";
print_r($match);
echo "</pre>";

?>

h.alizadeh
یک شنبه 09 آبان 1389, 00:44 صبح
$j = preg_replace('/\n/','\\n',$j);

اینطوری درست شد.ایول

------
آهان پس منظورتون ه برایpreg_match متن موردنظرباید در بین \\ باشه (file://\\ باشه) همیشه؟

funpatogh
یک شنبه 09 آبان 1389, 01:13 صبح
بله
حالا یا // یا ## یا @@ , ...