PDA

View Full Version : سوال: استفاده از preg_replace



msdn1223
شنبه 05 اسفند 1391, 12:04 عصر
سلام
دوستان من میخوام از preg_replace استفاده کنم برای جایگزینی
میخوام داخل متن اگه کلمه HTML بود به جاش مثلا بذارم XXX، نمیخوام دیگه <html> یا </html> رو هم دستکاری کنه، چطور باید بنویسم؟

MRmoon
شنبه 05 اسفند 1391, 12:16 عصر
preg_replace('/چه چیزی تغییر کند؟/','به چه چیزی تغییر کند؟','your Var name','چند بار تغییر کند؟');

چند بار تغییر کند مثلا تو متن اگه 100 تا بود اگه شما 50 رو بدید 50 تاش تغییر میکنه و بقیش باقی میمونه!

pirmard66
شنبه 05 اسفند 1391, 12:21 عصر
شما باید اون قسمت رو که می خواهید اگر داخلش html بود به xxx تغییر کند رو داخل یک متغیر بزارید و به این صورت با رعایت کردن ترتیب تابع:

مثال:


<html><bodey><?php $string='html is code!'; ?></body></html>
<?php
$replacement = 'xxx';
$pattern='/html/';
echo preg_replace($pattern, $replacement, $string); //Return xxx is code!
?>


Good Luck

msdn1223
شنبه 05 اسفند 1391, 12:33 عصر
شما باید اون قسمت رو که می خواهید اگر داخلش html بود به xxx تغییر کند رو داخل یک متغیر بزارید و به این صورت با رعایت کردن ترتیب تابع:

مثال:


<html><bodey><?php $string='html is code!'; ?></body></html>
<?php
$replacement = 'xxx';
$pattern='/html/';
echo preg_replace($pattern, $replacement, $string); //Return xxx is code!
?>


Good Luck

ممنون دوستان

ولی این کدی که گذاشتید کل html ها رو جایگذاری میکنه
ببینید مثلا متن من اینه:


my text html <html> a letter


من نمیخوام اون <html> دیگه جایگذاری بشه، برای اون باید پترن به چه صورت نوشته بشه؟

با تشکر

pirmard66
شنبه 05 اسفند 1391, 12:56 عصر
اینو تست کن!

البته فعلا این به ذهنم رسید!


<?php
$string='my text html <html> a letter !';
$replacement = 'xxx';
$pattern='/html/';
preg_replace($pattern, $replacement, $string); //Return xxx is code!
$string='my text xxx <html> a letter !';
$replacement = 'html';
$pattern='/<xxx>/';
echo preg_replace($pattern, $replacement, $string); //Return <html> is code!
?>

Good Luck

msdn1223
شنبه 05 اسفند 1391, 12:58 عصر
نه دادا
کار نکرد

pirmard66
شنبه 05 اسفند 1391, 12:59 عصر
من تست کردم ......کار کرد !!

اینم خروجی:
my text xxx <html> a letter !

msdn1223
شنبه 05 اسفند 1391, 13:08 عصر
دقیقا کد بالا رو میزنم و متیجه اینه
my text xxx a letter !

pirmard66
شنبه 05 اسفند 1391, 13:12 عصر
خب شما توی page sorce باید ببینی کد رو!!!!

تگ <html> رو توی مرورگر نمایش نمیده!!!!

eshpilen
شنبه 05 اسفند 1391, 13:41 عصر
این یک نمونه:

<?php

header('content-type: text/plain');

$str='<html>this is Html but not a tag / :HTML: jjjHTMLpp </html> <html';

echo "Before: $str\n";

echo 'After: ', preg_replace('#(?<!<|</)html#i', 'XXX', $str);

?>
خروجی:

Before: <html>this is Html but not a tag / :HTML: jjjHTMLpp </html> <html
After: <html>this is XXX but not a tag / :XXX: jjjXXXpp </html> <html
این نمونه کاملا حرفه ای نیست. احتمالا میشه کاملترش کرد.
مثلا تگ آخر چون بسته نشده درواقع یک تگ کامل نیست، و باید دید میخواید چیزهایی مثل اونم جایگزین بشه یا نه.
ضمنا HTML در عبارتی مثل jjjHTMLpp هم جایگزین شده، که شاید این رو نخواید.

راستی این رگولار اکسپرشن با استفاده از Assertion (http://www.php.net/manual/en/regexp.reference.assertions.php) ایجاد شده.
بوسیلهء Assertion ها ما میتونیم بگیم که قبل و/یا بعد از الگوی مورد نظر ما چه چیزهایی باید باشه یا نباشه.
البته بنده هم بلد نبودم همین الان یخورده مطالعه کردم درآوردم :چشمک: