$content = 'Здесь некая строка'
$content = substr( $content, 0, 1 );
... тра-та-та;
$content = substr( $content, 2, 50 );
Смотрел справочник по функциям, но так и не разобрался ввиду скудных познаний.
Спасибо
Спустя 21 минута, 29 секунд (3.09.2011 - 14:56) alex12060 написал(а):
Цитата |
нужно разбить его на 2 части |
Как? Так?
З и десь некая строка
или
Зде и сь некая строка
или так?
Здесь нека и я строка
Опишите подробней..
Спустя 5 минут, 22 секунды (3.09.2011 - 15:01) dadli написал(а):
если я вас права понял, вам нужно что то такого:
$content = 'Здесь некая строка';
$mas = explode(" ",$content);
echo $mas[0]." <b> ".$mas[1]." </b> ".$mas[2];
Спустя 1 минута, 6 секунд (3.09.2011 - 15:02) bengun написал(а):
посмотри в сторону функции explode http://php.net/manual/ru/function.explode.php
Спустя 2 минуты, 2 секунды (3.09.2011 - 15:04) Lutsk написал(а):
вобщем, допустим первые 2 слова мне нужно будет выделить от остальных. В итоге на выводе должно получиться, например, такое:
Слово слово слово слово слово слово слово слово слово ...
dadli, но эта функция все слова загоняет в массив. А если в тексте 1000 слов?
Например, анонс новости. Вид в итоге такой:
Саперы обезвредили особо опасный вибратор...
Слово слово слово слово слово слово слово слово слово ...
dadli, но эта функция все слова загоняет в массив. А если в тексте 1000 слов?
Например, анонс новости. Вид в итоге такой:
Саперы обезвредили особо опасный вибратор...
Спустя 19 минут, 16 секунд (3.09.2011 - 15:23) forza написал(а):
function getWords($string, $count = 1)
{
$title = null;
$words = explode(" ", $string);
for($i = 0; $i < $count; $i++)
$title .= $words[$i]." ";
return $title;
}
$string = 'Hello my name is vasja";
echo getWords($string, 2);
// echo Hello my
Спустя 11 минут, 43 секунды (3.09.2011 - 15:35) Invis1ble написал(а):
$string = 'Саперы обезвредили особо опасный вибратор';
echo preg_replace('#^([\pL-]+\pZ){2}#su', '<span style="color:#f00">$0</span>', $string);
Спустя 8 минут, 46 секунд (3.09.2011 - 15:44) Lutsk написал(а):
forza, да, наверное надо по этому пути идти. Хотя тут получается, остальную часть надо тоже отделить от первых двух слов и вывести на экран. Получается два цикла...
Invis1ble, элегантное решение. И тут, наверное, $string надо перед этим обрезать функцией substr( $string, 0, 50 ), верно?
Invis1ble, элегантное решение. И тут, наверное, $string надо перед этим обрезать функцией substr( $string, 0, 50 ), верно?
Спустя 4 минуты, 36 секунд (3.09.2011 - 15:49) Invis1ble написал(а):
Lutsk
зачем обрезать? я дал код, подсвечивающий первые два слова.
Или тебе что-то другое надо?
зачем обрезать? я дал код, подсвечивающий первые два слова.
Или тебе что-то другое надо?
Спустя 1 минута, 7 секунд (3.09.2011 - 15:50) Lutsk написал(а):
общая длина строки на определенное количество слов, 10 например. Всё, что дальше - обрезается
Спустя 8 минут, 54 секунды (3.09.2011 - 15:59) Invis1ble написал(а):
так тебе подсветить нужно или обрезать, я не понял?
Спустя 5 минут, 33 секунды (3.09.2011 - 16:04) Lutsk написал(а):
Цитата (Invis1ble @ 3.09.2011 - 12:59) |
так тебе подсветить нужно или обрезать, я не понял? |
и то и другое
Спустя 8 минут, 54 секунды (3.09.2011 - 16:13) Invis1ble написал(а):
$string = 'Саперы обезвредили особо опасный вибратор вибрирующий вибрационно.';
echo preg_replace('#^((?:[\pL-]+\pZ){2})((?:[\pL-]+\pZ){3}).*#su', '<span style="color:#f00">$1</span>$2...', $string);
обрезает 5 слов
Спустя 6 минут, 31 секунда (3.09.2011 - 16:20) Lutsk написал(а):
Invis1ble, держи +, это то что нужно. С регулярными выражениями я пока не знаком, но думаю, разберусь. Если что, спрошу совет
Спустя 24 минуты, 8 секунд (3.09.2011 - 16:44) Lutsk написал(а):
Invis1ble, что я делаю не так? С этим кодом текст обрезается на 200 символов и выводится:
а вот так не хочет:
выводится полностью весь текст, без изменений и обрезки
<?php
$content = $post->post_content;
$content = strip_tags($content);
$content = substr( $content, 0, 200 );
echo $content;
?>
а вот так не хочет:
<?php
$content = $post->post_content;
echo preg_replace('#^((?:[\pL-]+\pZ){2})((?:[\pL-]+\pZ){3}).*#su', '<span style="color:#f00">$1</span>$2...', $content);
?>
выводится полностью весь текст, без изменений и обрезки
Спустя 5 минут, 7 секунд (3.09.2011 - 16:49) Invis1ble написал(а):
Lutsk
А текст в какой кодировке? Дело в том, что это регулярка для юникода.
А текст в какой кодировке? Дело в том, что это регулярка для юникода.
Спустя 6 минут, 17 секунд (3.09.2011 - 16:55) Invis1ble написал(а):
echo preg_replace('#^((?:[\w-]+\s){2})((?:[\w-]+\s){3}).*#s', '<span style="color:#f00">$1</span>$2...', $content);
Спустя 18 минут, 6 секунд Invis1ble написал(а):
Можно так еще попробовать (вдруг там не только буквы тире и пробелы)
echo preg_replace('#^((?:.+\s+){2})((?:.+\s+){3}).*?#sU', '<span style="color:#f00">$1</span>$2...', $content);
Спустя 2 часа, 5 минут, 15 секунд (3.09.2011 - 19:00) neadekvat написал(а):
Любите вы все усложнять.
$text = 'Это некий пример текста.';
$space_pos = strpos($text, ' ');
$first_word = substr($text, 0, $space_pos);
$text = substr($text, $space_pos);
echo '<b>'. $first_word .'</b>'. $text;
Спустя 11 часов, 45 минут, 15 секунд (4.09.2011 - 06:46) Invis1ble написал(а):
Цитата |
$text = 'Это некий пример текста.'; $space_pos = strpos($text, ' '); $first_word = substr($text, 0, $space_pos); $text = substr($text, $space_pos); echo '<b>'. $first_word .'</b>'. $text; |
Как по мне - так этот код - усложнение
Спустя 3 часа, 11 минут, 8 секунд (4.09.2011 - 09:57) Lutsk написал(а):
Цитата (Invis1ble @ 3.09.2011 - 13:55) |
echo preg_replace('#^((?:.+\s+){2})((?:.+\s+){3}).*?#sU', '<span style="color:#f00">$1</span>$2...', $content); |
Вот этот код сработал. Выложил сайт на тестовый хостинг, можно посмотреть:
http://farmaplant.hostsites.ru/
Сам сайт на WordPress, кодировка UTF-8. Ниже привожу фрагмент кода нижнего среднего блока:
<div class="lastert_news">
<h1>LASTEST <span>NEWS</span></h1><a class="twitter" href="#">Follow us on twitter</a> <!--ССЫЛКА НА ТВИТТЕР-->
<div class="clear"></div>
<?php
$args = array( 'numberposts' => 1, 'category' => 39 );// ID раздела - см. в адресной строке браузера
$lastposts = get_posts( $args );
foreach($lastposts as $post) : setup_postdata($post); ?>
<span class="date"><?php the_date(); ?></span>
<?php
$content = $post->post_content;
$content = strip_tags($content);
echo preg_replace('#^((?:.+\s+){2})((?:.+\s+){15}).*?#sU', '<span style="color:#f00">$1</span>$2...', $content);
?><a class="news_more" href="<?php the_permalink(); ?>"><img src="<?php bloginfo('template_url'); ?>/images/more-link.png" width="12" height="12" alt="more" /></a>
<?php endforeach; ?>
</div><!--lastert_news-->
Еще бы первые два слова ссылкой на пост продублировать - вообще было бы супер. Думаю, разработчикам на WordPress этот код был бы очень кстати, а то я гуглил, - так и не нашел готового решения
Спустя 31 минута, 30 секунд (4.09.2011 - 10:28) Lutsk написал(а):
А вот для заголовка попробовал - не срабатывает, чтоб поменять цвет первого слова. Вот код функции, которая выводит заголовок:
function the_title($before = '', $after = '', $echo = true) {
$title = get_the_title();
if ( strlen($title) == 0 )
return;
$title = $before . $title . $after;
if ( $echo )
//echo $title;
echo preg_replace('#^((?:.+\s+){1})((?:.+\s+){10}).*?#sU', '<span style="color:#39F">$1</span>$2...', $title);
else
return $title;
}
Спустя 24 минуты, 1 секунда (4.09.2011 - 10:52) Invis1ble написал(а):
1. не понятно, что за get_the_title()
2.
2.
Цитата |
$title = $before . $title . $after; |
тоже не понял этого финта ушами
3. покажи текст заголовка, на котором тестируешь и как вызываешь ф-цию тоже
Спустя 6 минут, 16 секунд (4.09.2011 - 10:59) Lutsk написал(а):
get_the_title () - "возвращает заголовок записи для дальнейшего использования в php" (из мануала). Если недо поискать её код - поищу.
Вызов функции в шаблоне :
Сам текст - заголовок на странице этой, например http://farmaplant.hostsites.ru/?page_id=60
Вызов функции в шаблоне :
<h1><?php the_title(); ?></h1>
Сам текст - заголовок на странице этой, например http://farmaplant.hostsites.ru/?page_id=60
Спустя 6 минут, 47 секунд (4.09.2011 - 11:05) Invis1ble написал(а):
"Второй малый раздел" - заголовок? Если нужно просто выделить первое слово без "обрезки", то конечно не работает, ибо регулярка ждет минимум 11 слов, а у тебя всего 3, поэтому совпадения не происходит
А вообще, учи регулярки
echo preg_replace('#^((?:.+\s+){1})#sU', '<span style="color:#39F">$0</span>', 'Второй малый раздел');
А вообще, учи регулярки
Спустя 21 минута, 22 секунды (4.09.2011 - 11:27) Lutsk написал(а):
Цитата (Invis1ble @ 4.09.2011 - 08:05) |
А вообще, учи регулярки |
Само собой, учу php, но до регулярки пока не добрался.
Вот только тексты в заголовках разные на сайте, - если подставить переменную $title, окрашивается только первая буква:
echo preg_replace('#^((?:.+\s+){1})#sU', '<span style="color:#39F">$0</span>', $title);
Спустя 7 минут, 30 секунд (4.09.2011 - 11:34) Invis1ble написал(а):
Lutsk
показывай заголовок, где одна буква (только не нужно ссылки кидать)
показывай заголовок, где одна буква (только не нужно ссылки кидать)
Спустя 1 минута, 13 секунд (4.09.2011 - 11:35) neadekvat написал(а):
Цитата (Invis1ble @ 4.09.2011 - 07:46) |
Как по мне - так этот код - усложнение |
Абсолютно не согласен. Там все прозрачно. А если выровнять и подписать комменты - так читается лучше, чем Пушкин.
А вот с регулярками еще посидеть придется.
Спустя 2 минуты, 44 секунды (4.09.2011 - 11:38) Invis1ble написал(а):
neadekvat
С чем ты не согласен, с тем что я выразил свое мнение?
С чем ты не согласен, с тем что я выразил свое мнение?
Спустя 1 минута, 34 секунды (4.09.2011 - 11:40) neadekvat написал(а):
Цитата (Invis1ble @ 4.09.2011 - 12:38) |
С чем ты не согласен, с тем что я выразил свое мнение? |
Критикуйте мнение, а не человека (с) Так что я не согласен с выраженным мнением. Или на форуме уже нельзя дискутировать?
Спустя 26 минут, 34 секунды (4.09.2011 - 12:06) Lutsk написал(а):
Цитата (neadekvat @ 4.09.2011 - 08:40) | ||
Критикуйте мнение, а не человека (с) Так что я не согласен с выраженным мнением. Или на форуме уже нельзя дискутировать? |
Да не ссорьтесь, - в споре рождается истина!
Спустя 5 минут, 20 секунд (4.09.2011 - 12:12) Lutsk написал(а):
Цитата (Invis1ble @ 4.09.2011 - 08:34) |
Lutsk показывай заголовок, где одна буква (только не нужно ссылки кидать) |
Это на денвере глюк, а на сайте нормально
farmaplant.hostsites.ru/?page_id=60
Слева, правда, в хлебных крошках тоже меняется. Видимо, придется отказаться от этой затеи.
Спустя 23 минуты, 26 секунд (4.09.2011 - 12:35) Invis1ble написал(а):
neadekvat
Цитата |
Или на форуме уже нельзя дискутировать? |
конечно можно, даже нужно!
Просто мое мнение - мой код лучше, твое - твой код. Мы можем вечно спорить, но это субъективная оценка, потому что "прозрачность" - качество неизмеримое.
Спустя 7 минут, 41 секунда (4.09.2011 - 12:43) neadekvat написал(а):
Invis1ble, в данном случаи я основывался не на "мой код - твой код", а на "код на строковых функциях - регулярка". Если бы у меня код был как минимум строк в 10, а регулярка в одну - я бы еще подумал. Но когда код в 3 строки, а регулярка далеко не самая понятная и простая - лучше, имхо, использовать строковые функции.
Спустя 5 минут, 20 секунд (4.09.2011 - 12:48) Invis1ble написал(а):
neadekvat
"мой код - твой код" - это я утрировал, я прекрасно понял, что ты имел в виду
"мой код - твой код" - это я утрировал, я прекрасно понял, что ты имел в виду
Спустя 44 минуты, 23 секунды (4.09.2011 - 13:32) Lutsk написал(а):
во всяком случаю, думаю, топик будет полезным для других