$count = 0;
$text = preg_replace_callback('/<img.+?>/', function() use(&$count) {
$count++;
return "[ рисунок $count ]";
}, $text);
file.name.split(/\.\D+/g)[0]
file.name.slice(0, file.name.lastIndexOf('.'))
мне нужен сам формат png
file.name.slice(file.name.lastIndexOf('.') + 1)
.file.name.split('.').pop()
.file.name.match(/[^.]+$/)[0]
.file.name.replace(/.*\./, '')
. /что-то\d+/
.$arr = explode(', ', explode('какой-то текст: ', $str)[1]);
preg_match_all('/[^ ,:]+(?!.*:)/', $str, $matches);
$arr = $matches[0];
preg_match_all('~<.+?>(.*?)<\/.+?>~', $str, $matches);
$result = $matches[1];
function getTexts($domNode) {
$result = [];
foreach ($domNode->childNodes as $n) {
if ($n->nodeType === XML_TEXT_NODE) {
$result[] = $n->nodeValue;
} else if ($n->nodeType === XML_ELEMENT_NODE) {
array_push($result, ...getTexts($n));
}
}
return $result;
}
$doc = new DOMDocument();
$doc->loadHTML($str);
$result = getTexts($doc);
$doc = new DOMDocument();
$doc->loadHTML($str);
$result = [];
foreach ((new DOMXPath($doc))->query('//text()') as $n) {
$result[] = $n->nodeValue;
}
'/^\+372((( |-)?\d){8,})$/'
. Поясните это поведение
g
- то есть, ищутся все совпадения с шаблоном, а не только первое. Вы вызываете метод test - совпадение найдено, круто. Вызываете снова - поиск начинается не с начала, а с того места, где он был окончен в прошлый раз. Разумеется, в этот раз ничего не найдено. Вызываете test в третий раз - снова всё хорошо, потому что в прошлый раз совпадения кончились, поиск снова выполняется с начала строки.посоветуйте как вывернуть так, чтобы нормально отрабатывало
g
.hyper.lastIndex = 0;
. Разумеется, этот вариант является говнокодом.