Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Регулярка, нужна помощь
Форумы портала PHP.SU » PHP » Регулярные выражения » Регулярка, нужна помощь

Страниц (1): [1]
 

1. snikers987 - 20 Марта, 2012 - 14:19:12 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $str = '___{content}__________';
  4. $value='<u>длинное содержимое</u>';
  5. preg_replace("#\{content\}[\_]{".mb_strlen($value)."}#", $value, $str);
  6.  

необходимо произвести замену {content} и подчеркиваний за ним так, чтобы если символов в $value больше чем подчеркиваний- убрать все, меньше убрать количество равное длинне строки $value.
Хотелось бы обойтись без блоков if else, если можно.
2. EuGen - 20 Марта, 2012 - 14:31:06 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $sData  = '___{content}__________';
  2. $sValue = 'строка7';
  3.  
  4. $sData=preg_replace_callback('/\{content\}([\_]+)/u', function($rgMatches) use ($sValue)
  5. {
  6.    $iCount = mb_strlen($rgMatches[1], 'UTF-8')-mb_strlen($sValue, 'UTF-8');
  7.    return $sValue.($iCount>0?str_repeat('_', $iCount):'');
  8. }, $sData);
  9.  
  10. //var_dump($sData);

?

 

Powered by ExBB FM 1.0 RC1