• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Anonym

Apagar texto entre duas variaveis

15 mensagens neste tópico

é assim

imaginem o texto 'Ola como estas'

como faço para apagar tudo o que esteja entre 'ola' e 'estas' ??

ou seja apagava o 'como'

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como normalmente acontece em programação, tens mais que uma maneira de fazer isso. Uma delas seria

$str = "ola como estas";
$arr = explode(" ", $str);
$novastring = "$arr[0] $arr[2]";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok.. eu expliquei mal

'AA dsfsdfsdf BB asdasfddgdfs AA 43lj543ljk5 BB'

apagar tudo entre AA e BB...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O script acima funciona dado que queres apagar tudo entre o primeiro indice, que é zero e o último que podes obter chamando a função count() e subtraíndo uma unidade. Se quiseres apagar entre dois pontos que não o primeiro e o último indice então terás de percorrer o vector para encontrares os indices correctos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara:

Autor: Forrester, Anthony

Título: Take 3 : Student`s Book 9º Ano 

Editor: Lisboa Editora 

ISBN: 972-680-201-6

 

Autor: Oliveira, Maria Do Carmo Ordonhas Ferrão De

Título: Webline 8º Ano 

Editor: Lisboa Editora 

ISBN: 972-680-407-8

 

Autor: Paixão, Maria Da Conceição Bravo Ludovice

Título: Guiões para Leitura Orientada da Obra a Menina do Mar 

Editor: Lisboa Editora 

ISBN: 972-680-275-X

 

Autor: Vidal, Beatriz

Título: Educação Visual e Tecnológica 5º/6º Anos 

Editor: Lisboa Editora 

ISBN: 972-680-457-4

Autor: Bolton, David

Título: Basic Working Grammar 2º/3º Ciclos 

Editor: Lisboa Editora 

ISBN: 972-680-198-2

O que eu queria mesmo era copiar os dados que estão á frente de Autor, Título, Editor, ISBN

Então optei por tentar eliminar o q nao interessava.. mas se alguem conhecer uma maneira melhor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Expressões regulares era o que usava, mas parsing simples deve ser mais fácil, no entanto não sei que funções de tratamento de strings existem em PHP...

Um explode por ":" permite separar a string "Autor: Autor: Bolton, David" em duas strings, "Autor" e " Bolton, David", um trim, dá para apagar os espaços no inicio e no fim da segunda string, a que tem o nome do autor.

O texto está em ficheiro? Não sei se existe alguma forma de separar um texto por linhas em PHP, isto é, alguma função que faça isso automáticamente, mas se houver tens o problema resolvido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se existe alguma forma de separar um texto por linhas em PHP, isto é, alguma função que faça isso automáticamente, mas se houver tens o problema resolvido.

Provavelmente, um explode com "\n"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não assumi que isso funcionasse porque não sei de onde são obtidos os dados e nem sempre o \n é usado para separar linhas, mas é uma solução.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o padrão é sempre o mesmo podes fazer o seguinte com expressões regulares:

<?php

$dados = "Autor: Forrester, Anthony
Título: Take 3 : Student`s Book 9º Ano 
Editor: Lisboa Editora 
ISBN: 972-680-201-6

Autor: Oliveira, Maria Do Carmo Ordonhas Ferrão De
Título: Webline 8º Ano 
Editor: Lisboa Editora 
ISBN: 972-680-407-8";

$dados = explode("\n", $dados);
$output = array();

for ($i = 0; $i < count($dados); $i++) {
$output[count($output)] = preg_replace("#^(Autor|Título|Editor|ISBN):\s(.+?)#i", "\\2", $dados[$i]);
}

echo "<pre>";
print_r($output);
echo "</pre>";

?>

Array
(
    [0] => Forrester, Anthony
    [1] => Take 3 : Student`s Book 9º Ano 
    [2] => Lisboa Editora 
    [3] => 972-680-201-6
    [4] => 
    [5] => Oliveira, Maria Do Carmo Ordonhas Ferrão De
    [6] => Webline 8º Ano 
    [7] => Lisboa Editora 
    [8] => 972-680-407-8
)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nazgulled

porque $output[count($output)] e não $output[] ?

Porque a última vez que programei PHP a sério já faz mais de um ano e o que mais programei neste último ano foi em C.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assumindo que a estrutura do ficheiro é algo como:

Detalhe1: Olá adfasdfa

Detalhe2: adfadfadf

Detalhe1: Olá adsfadfasdfasdfafds

Detalhe2: Olá adsfasfdafa

Ou seja:

{Nome do detalhe}: {Valor do detalhe} é a estrutura de cada detalhe, cada livro é um conjunto de detalhes separados por \n e o ficheiro é um conjunto de livros separados por \n\n.

Atenção que tenho um str_replace() para tornar isto portável entre Mac, Windows e Linux, por causa do line feeds (em Linux é \n, em Mac é \r e em Windows é em \r\n).

$dados = "Autor: Forrester, Anthony
Título: Take 3 : Student`s Book 9º Ano
Editor: Lisboa Editora
ISBN: 972-680-201-6

Autor: Oliveira, Maria Do Carmo Ordonhas Ferrão De
Título: Webline 8º Ano
Editor: Lisboa Editora
ISBN: 972-680-407-8";

$dados = str_replace("\r", "\n", str_replace("\r\n", "\n", $dados));
$obras = explode("\n\n", $dados);
foreach($obras as $k => $v) $obras[$k] = explode("\n", $v);

foreach($obras as $k => $obra){
    foreach($obra as $detalhe){
       $dummy = explode(":", $detalhe, 2);
       $obraa[$dummy[0]] = $dummy[1];
    }
    $obras[$k] = $obraa;
}

var_dump($obras);

Não testado.

EDIT: Esqueci-me de dizer, a variável $obras fica assim:

array(

    {id do livro} => array(

                              {detalhe} => {valor},

                              {detalhe} => {valor}),

    {id do livro} => array(

                              {detalhe} => {valor},

                              {detalhe} => {valor})

);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora