كيف تعمل مع regexiterator :: استبدال الوضع؟
سؤال
ما الخطا في الكود الخاص بي:
$i = new RegexIterator(
new ArrayIterator(array(
'test1'=>'test888',
'test2'=>'what?',
'test3'=>'test999')),
'/^test(.*)/',
RegexIterator::REPLACE);
foreach ($i as $name=>$value)
echo $name . '=>' . $value . "\n";
المتكرر فارغ ، لماذا؟ شكرا لمساعدتك!
المحلول 2
كما قال بالفعل ، إنه خطأ في PHP. لقد أبلغت ذلك إلى php.net: http://bugs.php.net/bug.php؟id=50579
نصائح أخرى
إذا قمت بتوضيح وضع التشغيل (المعلمة الثالثة في بيان regexiterator الجديد) ، فستحصل على قيم مطابقة ، مثل ذلك:
$array = array('test1' => 'test888', 'test2' => 'what?', 'test3' => 'test999');
$pattern = '/^test(.*)/';
echo '<pre>';
echo "DEFAULT\n";
$arrayIterator = new ArrayIterator($array);
$regexIterator = new RegexIterator($arrayIterator, $pattern);
foreach ($regexIterator as $value) {echo "$value\n";}
echo '</pre>';
يمكنك اللعب مع أوضاع التشغيل المختلفة ، اعتمادًا على ما تريد. اذهب اقرأ على وثائق setMode: http://www.php.net/manual/en/regexiterator.setmode.php
النظر في الرمز التالي
$mixedArray=array(
'tester2',
'tes1',
'bad4',
'2good2',
'2birds',
'birds8',
'8young girls',
'6 young boys'
);
$ait=new ArrayIterator($mixedArray);
$regexIt=new RegexIterator($ait,'/^(\d+)(\w+)/', RegexIterator::REPLACE);
$regexIt->replacement='$2:$1';
foreach($regexIt as $key=>$value){
echo $value."<br>";
}
انتاج |
good2:2
birds:2
young:8 girls
لا تنتمي إلى StackOverflow