strpos — PHP, разбить строку с помощью амперсанда

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

Проблема: я работаю со строкой, которая содержит амперсанд, для отображения двух имен. Сложность: иногда мне может понадобиться вытащить имя слева или имя справа для отображения. Дополнительная трудность заключается в том, что некоторые имена могут включать в себя HTML-объекты, которые, конечно, также используют амперсанд.

Пример: я могу использовать что-то простое, например:

«Фред & Вильма»

Чтобы получить «Fred» из строки, я попытался использовать PHP-функцию STRPOS (), но ничего не получил.

$nPos = strpos( " & ", $names );

Обратите внимание, что я использую пробелы с обеих сторон, чтобы избежать проблем с сущностями HTML.

Веселее, проверяя, получаю ли я результаты:

if ( $nPos === 0 )
{
echo "String ' $' not found in " . $names . "<br />";
}

Не возвращает значение. Это говорит мне из различной документации и тому подобного в Интернете, что я могу найти, что у меня должно быть значение для $ nPos, которое полезно.

Если я добавлю:

echo "Position of string ' & ': " . $nPos . "<br />";

Я получаю пустое значение после текста в двойных кавычках.

Я в недоумении, как сделать то, что мне нужно здесь. Мне нужно, чтобы получить положение » & «символов, но не получаю его. Отсюда очевидно, что использование функции substr () необходимо для получения значений слева и / или справа от амперсанда.

1

Решение

strpos первый параметр — стог сена — строка, в которой вы выполняете поиск & вторая — иголка — нить, которую вы ищете. Так что просто поменяйте местами параметры:
$nPos = strpos( $names, " & " );

Вы можете найти больше информации Вот

3

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

Если вам просто нужны имена, я бы разбил их на массив:

$nameArray = explode(' & ', $names);

Это не будет неожиданно разделить на HTML, потому что & не следует пробел в этой ситуации.

2

Вы можете использовать explode($delimeter, $subject_string) функция, которая встроена в PHP. Например:

$names = 'firstName & lastName';
// use `&` as delimeter to split on and callback `trim` function on each array item
$names_array = array_map('trim',explode(' & ', $names));

теперь $ names_array будет выглядеть так:

array(
[0] => 'firstName'
[1] => 'lastName'
)

и может быть доступ следующим образом:

$firstName = $names_array[0];
$lastName = $names_array[1];
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector