Подстрочные цифры из строки

Я хочу, чтобы подписать каждую цифру из строки.

Например :

$str = '1Department of Chemistry, College of 2Education for Pure Science';

Вывод хочу

<sub>1</sub>Department of Chemistry, College of <sub>2<sub>Education for Pure Science

Я получил все цифры из строки:

//digits from string
preg_match_all('!\d+!', $str, $matches);
print_r($matches);

Но как я могу применить эффект подписи к цифрам и печатать строки?

3

Решение

Ты можешь использовать preg_replace:

preg_replace( '!\d+!', '<sub>$0</sub>', $str );

демонстрация

4

Другие решения

Это может помочь:

$str = '1Department of Chemistry, College of 2Education for Pure Science';
preg_match_all('!\d+!', $str, $matches);
foreach($matches[0] as $no){
$str = str_replace($no, '<sub>'.$no.'</sub>', $str);
}
echo htmlentities($str);

Выдаст вывод:

<sub>1</sub>Department of Chemistry, College of <sub>2</sub>Education for Pure Science

Или же preg_replace даст тот же вывод:

$str = '1Department of Chemistry, College of 2Education for Pure Science';
$str = preg_replace( '!\d+!', '<sub>$0</sub>', $str );
echo htmlentities($str);
1

Я полагаю, вы хотите что-то вроде этого

$string = '1Department of Chemistry, College of 2Education for Pure Science';
$pattern = '/(\d+)/';
$replacement = '<sub>${1}</sub>';
echo preg_replace($pattern, $replacement, $string);

Найденный номер будет заменен на сам в пределах суб-тега. Пример был взят из руководства по PHP preg-replace, которое вы можете найти здесь http://php.net/manual/en/function.preg-replace.php

1

<?php

function subscript($string)
{
return preg_replace('/(\d+)/', '<sub>\\1</sub>', $string);
}

$input    = '1Department of Chemistry, College of 2Education for Pure Science';
$expected = '<sub>1</sub>Department of Chemistry, College of <sub>2</sub>Education for Pure Science';
$output   = subscript($input);

if ($output === $expected) {
printf('It works! %s', htmlentities($output));
} else {
printf('It does not work! %s', htmlentities($output));
}
0

Я уже знаю, что вы приняли ответ, но все же я публикую этот ответ, потому что я работал над ним, и, во-вторых, это может быть полезно для кого-то еще в будущем.

<?php

$str = '1Department of Chemistry, College of 2Education for Pure Science';

$strlen = strlen( $str );
$numbers = array();
$replace = array();
for( $i = 0; $i <= $strlen; $i++ ) {
$char = substr( $str, $i, 1 );
// $char contains the current character, so do your processing here
if(is_numeric($char)){
$numbers[] = $char;
$replace[] = "<sub>".$char."</sub>";
}
}

echo $str = str_replace($numbers, $replace, $str);

?>
0
По вопросам рекламы [email protected]